//
//  MainViewController.swift
//  HJWeibo
//
//  Created by mac on 16/1/10.
//  Copyright © 2016年 mac. All rights reserved.
//

import UIKit

class MainViewController: UITabBarController {
    
    //MARK:按钮的监听事件
    //private :表示私有的，
    /*
    按钮的点击事件是由运行循环监听并且以消息机制传递的
    而Swift为了追求性能(静态类型的语言) 决定了其在编译时期就已经决定好了某个事件应该如何去调用
    而使用了private修饰的方法在运行的时候对于运行循环式不可见的所以会提示找不到xxx方法
    可以使用@objc修饰私有方法,其目的是在于告诉系统此方法使用Objective-C的基于运行时的机制(KVC动态派发消息)来执行方法
    */
   @objc private func plusBtnClick() {
        
        print(__FUNCTION__)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //系统的 tabBar 是只读属性，不能直接修改
        //可以使用kvc 间接修改
       // print(tabBar.classForCoder)
        
        let mainTabBar = MainTabBar()
        setValue(mainTabBar, forKey: "tabBar")
        //Selector("plusBtnClick") == "plusBtnClick"  类型实例
        mainTabBar.plusBtn.addTarget(self, action: "plusBtnClick", forControlEvents: .TouchUpInside)
        
        print(tabBar.classForCoder)
        
        
        //根控制器的入口
        addChildViewControllers()

    }

    
    //添加子控制器
  private  func addChildViewControllers() {
        //首页
        addChildViewController(HomeTableViewController(), imageName: "tabbar_home", title: "首页")
        //消息
        addChildViewController(MessageTableViewController(), imageName: "tabbar_message_center", title: "消息")
        //发现
        addChildViewController(DiscoverTableViewController(), imageName: "tabbar_discover", title: "发现")
        //我
        addChildViewController(ProfileTableViewController(), imageName: "tabbar_profile", title: "我")
        
    }
    
    //抽取的添加方法
    func addChildViewController(vc: UIViewController,imageName: String,title: String) {
        //实例化 VC
//        let home = HomeTableViewController()
        //设置图片
        vc.tabBarItem.image = UIImage(named: imageName)
        
        //手写代码设置item选中的图片显示样式
//        vc.tabBarItem.selectedImage = UIImage(named: imageName + "_highlighted")?.imageWithRenderingMode(. AlwaysOriginal)
//        //设置文字颜色
//        vc.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.orangeColor()], forState: .Selected)
        //上两句代码可省写为
        //self.tabBar.tintColor = UIColor.orangeColor()
        
        
        //设置title
//        home.tabBarItem.title = "首页"
//        home.navigationItem.title = "首页"
        vc.title = title
        
        //导航控制器
        let nav = UINavigationController(rootViewController: vc)
        
        //添加子视图控制器
        addChildViewController(nav)
        
        
    }
    
    
    
    
    
    
}
